package br.com.pfc.application.controller.atendimentos;

import br.com.pfc.application.controller.BaseController;
import br.com.pfc.application.dao.AtendimentoDAO;
import br.com.pfc.model.Atendimento;
import br.com.pfc.util.AppConstantes;
import br.com.pfc.util.DataUtil;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

/**
 *
 * @author mucceli
 */
@Scope(ScopeType.CONVERSATION)
@Name("atendimentoAlterarAction")
public class AtendimentoAlterarController extends BaseController{

    private Atendimento atendimento = new Atendimento();
    @In
    AtendimentoDAO atendimentoDAO;

    @Begin(flushMode = FlushModeType.MANUAL, nested = true)
    public String setup(Integer idAtendimento){
        atendimento = atendimentoDAO.obterPorId(idAtendimento);
        return "altera_atendimento";
    }

    @End
    public String alterar(Integer idAtendimento) {
        try {
            atendimentoDAO.alterar(atendimento);
            adicionarMensagemInformacao("Atendimento Alterado com sucesso!");
            return "atendimentos";
        } catch (Exception e){
            adicionarMensagemErro("Não foi possível alterar atendimento.\n "+e);
            return "atendimentos";
        }
    }

    @End
    public String fecharChamado(){
        try {
            DataUtil dataUtil = new DataUtil();
            atendimento.setStatus(AppConstantes.STATUS_FECHADO);
            atendimento.setDataFechamento(dataUtil.obtemDataAtual());
            atendimentoDAO.alterar(atendimento);
            adicionarMensagemInformacao("Atendimento fechado com sucesso!");
            return "atendimentos";
        } catch (Exception e){
            adicionarMensagemErro("Não foi possível fechar atendimento.\n "+e);
            return "atendimentos";
        }
    }

    public Atendimento getAtendimento() {
        return atendimento;
    }

    public void setAtendimento(Atendimento atendimento) {
        this.atendimento = atendimento;
    }
}
